<!DOCTYPE HTML>
<html>
<head>
<title>Canvas Uses CALayerOverlay Test</title>

<script>
// This test should render a green square if GPU acceleration is enabled
// and a blue square if GPU accelerated 2d canvas is disabled.
// Red means the canvas is not using an overlay.

// '--enable-gpu-benchmarking' is required for this test.

function main() {
  const canvas = document.getElementById('canvas');
  const context = canvas.getContext('2d');

  context.clearRect(0, 0, canvas.width, canvas.height);
  context.fillStyle = "Red";
  context.fillRect(0, 0, 100, 100);

  function errorCodeHandler(errorCode) {
    // gfx::kCALayerSuccess = 0
    if (errorCode == 0) {
      // If gpuBenchmarking is not supported, the test will not reach here and
      // the quad will not be drawn.
      context.clearRect(0, 0, canvas.width, canvas.height);
      context.fillStyle = chrome.gpuBenchmarking.isAcceleratedCanvasImageSource(canvas) ? "Green" : "Blue";
      context.fillRect(0, 0, 100, 100);
      window.domAutomationController.send("SUCCESS");
    } else {
      console.log("CALayerOverlay is not used. Error code:" , errorCode);
      window.domAutomationController.send("FAILED");
    }
  }

  function draw() {
     if (!chrome.gpuBenchmarking.addCoreAnimationStatusEventListener(errorCodeHandler)) {
       console.log("addCoreAnimationStatusEventListener fails!");
       window.domAutomationController.send("FAILED");
     }
  }

  window.requestAnimationFrame(draw);
}

</script>
</head>
<body onload="main()">
<canvas id="canvas" width="100" height="100" style="position:absolute; top:0px; left:0px"></canvas>
</body>
</html>
